console.log("===========promise基础=============\n")
/**
 * resolve是异步操作执行成功后要执行的回调函数，那么它如何执行呢？Promise对象提供了then方法，用来指定执行resolve回调。
 * @returns {Promise}
 */  
function runAsync(){
    let p = new Promise(function(resolve, reject){
         setTimeout(function(){
              console.log('执行异步操作1')
              resolve('promise1')
         }, 1000)
    })
    return p
}
//会输出“执行异步操作1”​，但其中的resolve('promise1')并没有执行，它的作用是什么呢？
// runAsync()
//then方法中的函数就类似于一个回调函数，但它能够在异步操作完成之后被执行，
//这就是Promise的好处，它能够将原来的回调函数分离出来，在异步操作执行完后，再去执行回调函数。
// runAsync().then(function(data){
//      console.log(data)
// })
function runAsync2(){
     let p = new Promise(function(resolve, reject){
          setTimeout(function(){
               console.log('执行异步操作2')
               resolve('promise2')
          }, 2000)
     })
     return p
}
function runAsync3(){
     let p = new Promise(function(resolve, reject){
          setTimeout(function(){
               console.log('执行异步操作3')
               resolve('promise3')
          }, 1000)
     })
     return p
}
runAsync()
     .then(function(data){
          console.log(data)
          return runAsync2()
     })
     .then(function(data){
          console.log(data)
          return runAsync3()
     })
     .then(function(data){
          console.log(data)
     })